<?php
/**
 * Modelo CRUD de usuários
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
// TODO: Provavelmente limar
class PC4_Crud_Newsletter extends PC4_Crud_Abstrato {
	
	function __construct($tabela = 'newsletters', $validacoes = array(), $banco = null) {
		parent::__construct($tabela, $validacoes, $banco);
	}

	/**
	 * Verifica os campos estão corretos
	 * @param array $campos
	 * @param int $id
	 * @return array com mensagens de erros
	 */
	function valida($campos, $id = 0) {
		$erros = array();
		$rs = $this->consulta(array('email' => $campos['email'], 'id <>' => $id), 1, 1);
				
		if (!empty($rs)) {
			$erros[] = "Este email já existe em nossa base de dados.";
		}
		if (trim($campos['nome']) == '') {
			$erros[] = "Seu nome não pode estar em branco.";
		}
		if (trim($campos['email']) == '') {
			$erros[] = "Seu e-mail não pode estar em branco.";
		}
		
		return $erros;
	}

	/**
	 * Recebe um array com os campos e insere na base de dados o novo registro
	 * @param array $umRegistro
	 * @return int/array $id inserido ou (array)$erros com mensagens de erro
	 */
	function insereDifTipos($umRegistro) {
//d($umRegistro);
		$erros = $this->validaDifTipos($umRegistro);
		if (empty($erros)) {
			$this->db->insert($this->tabela, $umRegistro);
//d($this->db->last_query());
			$id = $this->db->insert_id();
			return $id;
		}
		else {
			return $erros;
		}
	}
	
	/**
	 * Edita um registro baseado no id
	 * @param array $umRegistro
	 * @param mixed $valor
	 * @param string $campo o nome alternativo para a chave primaria
	 * @param bool $debug
	 * @return array $erros para cada campo que não passou da validação 
	 */
	function editaDifTipos($umRegistro, $valor, $campo = 'id', $debug = false) {
		$erros = $this->validaDifTipos($umRegistro, $valor);
		if (empty($erros)) {
			$this->db->update($this->tabela, $umRegistro, array($campo => $valor));
			if ($debug) {
				d($this->db->last_query(), "edita");
			}
		}
		return $erros;
	}
	
	/**
	 * Verifica os campos estão corretos
	 * @param array $campos
	 * @param int $id
	 * @return array com mensagens de erros
	 */
	function validaDifTipos($campos, $id = 0) {
		$erros = array();
		$rs = $this->consulta(array('valor' => $campos['valor'], 'id <>' => $id), 1, 1);
				
		if (!empty($rs)) {
			$erros[] = "Este contato já existe em nossa base de dados.";
		}
		if (trim($campos['valor']) == '') {
			$erros[] = "Seu contato não pode estar em branco.";
		}
		if (trim($campos['tipo']) == '') {
			$erros[] = "Você precisa escolher um tipo de contato.";
		}
		
		return $erros;
	}
}
?>